home *** CD-ROM | disk | FTP | other *** search
- jas 2.00 eXtended Version
- last modifications - by Thorsten Roskowetz -
-
- version x12
- Mar 04 1995 Volker Seebode (VS)
- - fixed 'bchg', 'bclr', 'bset' 'btst' and 'stop' instruction
- - added handling of pc-relative reference to label ('label(pc)')
- - cleaned up prototypes
-
- version x11
- Mar 04 1995
- - fixed a problem with the 'movep' instruction
-
- version x10
- Nov 28 1994
- - applied LABELDIFF patch by EAJ to support 'label-label'
-
- version x10
- Nov 28 1994
- - applied LABELDIFF patch by EAJ to support 'label-label'
- as a valid operand. Both operands must be in the same
- source file and the same segment as this is 'quick hack'
- implementation
- - removed the old 'dc.w Label' patch that was used by HCC
- to produce shorter switch-tables (don't use this JAS with
- older versions of the SozobonX compiler!)
-
- version x9
- Nov 01 1994
- - fixed a couple of serious bugs in the branch optimization
- code (one of them I introduced myself back in x7); as a
- side-effect the statistics shown in verbose mode should be
- correct now
- - added all missing string-escape-sequences (as per ANSI)
- - changed handling of numerical constants; as a consequence a
- leading "0" implies an octal constant, "0x" a hex constant
- (the old prefixes '$' and '@' still work of course)
- - small performance tweaks
-
- version x8
- Oct 24 1994
- Since version 1.2 jas contains changes for minix:
- - input compatibility with ack
- - short absolute addressing mode
- - explicit pc-relative addressing mode (involving text labels)
- This version of SozobonX's jas is compiled to use them...
-
- version x7
- Oct 20 1994
- bug fixed:
- jas will no longer use a 'bsr' when the destination
- isn't within the appropriate +/-32K range (this was
- a problem with the branch optimization algorithm)
- bug fixed:
- '~'-operator will work correctly now
- changed sources so that jas will compile with MiNTlibs and
- with c68 if requiered (new file proto.h); fixed most
- of the more serious warnings c68 reports
-
- ----
- version x6
- Jul 21 1994
- changes by Jerry Geiger
- small bugfixes and std interface
-
- version x5
- ??? ?? 199?
- changes by Jerry Geiger
-
- ----
- Änderungen an JAS, vorgenommen von Holger Weets
- Stand: 18.11.92
-
- 2.0 -> 2.00x1:
- - mit neuem Compiler, Optimizer und XDLibs übersetzt
- --> statt 38 KB jetzt nur noch 32 KB lang
- (noch ohne peephole changes)
- - Versions-Meldung auf die anderen Komponenten angepasst
- - Fehlermeldungen an die des Compilers angepasst, damit daß
- Error-Handling unter C-Desk besser läuft
- - statt 'bra.b' kann jetzt richtigerweise auch 'bra.s' geschrieben
- werden. Gleiches gilt für alle '.b' Endungen.
- - Datei Ein-/Ausgabe umgeschrieben, ist jetzt wesentlich schneller und
- kürzer; jetzt ist er (immer noch ohne peephole changes) nur noch
- 28 KB lang ...
- - JAS liest jetzt auch großgeschriebene Kommandos ein,
- wie z.B. "MOVE.L D0, A0".
- Vorgesehen war das bereits, aber funktioniert hat es nicht...
- - Die Angabe von '-o <OUTFILE>' ist jetzt WIRKLICH optional; auch das
- war bereits vorgesehen, funktionierte aber nicht.
- - "dc.w <LABEL>" erzeugt einen Wortbreiten Eintrag in der Datei,
- welcher nicht reloziert werden muß, und den Abstand von der
- aktuellen Position zur Adresse des Labels angibt.
- Dies ist äußerst vorteilhaft für die Erzeugung kurzer Programme, denn
- XCC V2.00x5+ erzeugt dc's bei Switches in Form von Sprungtabellen,
- bisher als ".dc.l <LABEL>, jetzt als ".dc.w <LABEL>"
- -> die Tabelle wird nur halb so lang
- -> der Zugriff ist schneller und kürzer
- -> es können evtl. mehr kurze Branches erzeugt werden
-
- - erkennt jetzt die Pseudo - Ops
- CODE (*) TEXT, .TEXT -- Text-Segment-Anfang, optional mit Namen
- DATA, .DATA -- Data-Segment-Anfang, optional mit Namen
- BSS .BSS -- BSS-Segement-Anfang, optional mit Namen
- XDEF (*), GLOBL, .GLOBL -- Symbol exportieren, Namensliste erlaubt
- XREF (*) -- Symbol importieren, Namensliste erlaubt
- (wurde nur aus Kompatibilitäts-
- Gründen aufgenommen und ist nicht
- notwendig, tut auch nichts)
- END, .END -- Assemblierung beenden
- ORG, .ORG -- aktuelle Adresse setzen
- EVEN, .EVEN -- nachfolgende Daten auf gerade Adresse
- EQU, .EQU -- Zuweisung <name> = <wert>
- DC, .DC -- nachfolgende Daten speichern
- DS, .DS -- Bytes reservieren
- COMM, .COMM -- Größe eines externen Symbols
- definieren
- Die mit (*) gekennzeichneten Pseudo-Ops habe ich aus Kompatibilitäts-
- Gründen ergänzt.
- Auch hier ist die Groß-/Kleinschreibung egal.
- 2.00x1 -> 2.00x2:
- - mit den neusten Komponenten übersetzt, jetzt auch mit Peepholechanges
- ->nur noch 25 KB...
- - wenn eine leere Datei übersetzt werden sollte (leere Segmente, also
- nur Pseudo-Ops), dann schrieb jas den Datenträger bis an den Rannd
- voll, was bei einer Festplatte schon etwas dauern konnte...
- Behoben.
- 2.00x2 -> 2.00x3:
- - PseudoOp "PUBLIC" wird erkannt (ebenfalls Kompatibilität)
- - wenn lokale Symbole in die Tabelle aufgenommen werden sollen (-L), dann
- werden bei Level 1 jetzt nicht mehr nur die aussortiert, die mit einem
- 'L' beginnen, sondern auch solche, die mit einem 'T' beginnen (der TOP
- erzeugt solche schon immer, aber Tony hat Joe davon wohl nichts erzählt)
- 2.00x3 -> 2.00x4:
- - neue Option '-e ERRORFILE' eingebaut; Fehlermeldungen werden auf den
- Bildschirm und in die Datei ERRORFILE geschrieben
-
-
- ANMERKUNGEN:
- - JAS kann auch C-Kommantare (/* ... */)
- - '@' ist das Prefix fuer Oktal-Konstanten
- - '$' ist das Prefix fuer Hex-Konstanten
- - '<<' und '>>' werden erkannt (Shift-Operation)
- - pro Ausdruck ist nur ein Label erlaubt (warum ?)
-
-
- BUGS:
- - jsr LABEL(pc)
- wird nicht angemeckert, wenn LABEL nicht in der selben Datei
- definiert ist, funktioniert aber trotzdem nicht!
- - move.X LABEL(pc, d0.w), Y
- funktioniert nicht, move.X 0(pc, d0.w), Y aber wohl
- - pea 1000
- erzeugt nicht, wie es sein sollte, absolute short, sondern
- absolute long ...
-
- FEHLT NOCH:
- - die Erkennung dessen, was nun eigentlich in einer Zeile steht,
- ist immer noch viel zu kompliziert
- (JAS ist mit LEX und YACC geschrieben, was bei einem Assembler-
- Scanner nun wirklich nicht nötig ist, und außerdem viel zu
- langsam und lang)
-
-